{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "# Ignore numpy dtype warnings. These warnings are caused by an interaction\n",
    "# between numpy and Cython and can be safely ignored.\n",
    "# Reference: https://stackoverflow.com/a/40846742\n",
    "warnings.filterwarnings(\"ignore\", message=\"numpy.dtype size changed\")\n",
    "warnings.filterwarnings(\"ignore\", message=\"numpy.ufunc size changed\")\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "%matplotlib inline\n",
    "import ipywidgets as widgets\n",
    "from ipywidgets import interact, interactive, fixed, interact_manual\n",
    "import nbinteract as nbi\n",
    "\n",
    "sns.set()\n",
    "sns.set_context('talk')\n",
    "np.set_printoptions(threshold=20, precision=2, suppress=True)\n",
    "pd.options.display.max_rows = 7\n",
    "pd.options.display.max_columns = 8\n",
    "pd.set_option('precision', 2)\n",
    "# This option stops scientific notation for pandas\n",
    "# pd.set_option('display.float_format', '{:.2f}'.format)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Predicting Tip Amounts\n",
    "\n",
    "Previously, we worked with a dataset that contained one row for each table that a waiter served in a week. Our waiter collected this data in order to predict the tip amount he could expect to receive from a future table."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>total_bill</th>\n",
       "      <th>tip</th>\n",
       "      <th>sex</th>\n",
       "      <th>smoker</th>\n",
       "      <th>day</th>\n",
       "      <th>time</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>16.99</td>\n",
       "      <td>1.01</td>\n",
       "      <td>Female</td>\n",
       "      <td>No</td>\n",
       "      <td>Sun</td>\n",
       "      <td>Dinner</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10.34</td>\n",
       "      <td>1.66</td>\n",
       "      <td>Male</td>\n",
       "      <td>No</td>\n",
       "      <td>Sun</td>\n",
       "      <td>Dinner</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>21.01</td>\n",
       "      <td>3.50</td>\n",
       "      <td>Male</td>\n",
       "      <td>No</td>\n",
       "      <td>Sun</td>\n",
       "      <td>Dinner</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>23.68</td>\n",
       "      <td>3.31</td>\n",
       "      <td>Male</td>\n",
       "      <td>No</td>\n",
       "      <td>Sun</td>\n",
       "      <td>Dinner</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>24.59</td>\n",
       "      <td>3.61</td>\n",
       "      <td>Female</td>\n",
       "      <td>No</td>\n",
       "      <td>Sun</td>\n",
       "      <td>Dinner</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   total_bill   tip     sex smoker  day    time  size\n",
       "0       16.99  1.01  Female     No  Sun  Dinner     2\n",
       "1       10.34  1.66    Male     No  Sun  Dinner     3\n",
       "2       21.01  3.50    Male     No  Sun  Dinner     3\n",
       "3       23.68  3.31    Male     No  Sun  Dinner     2\n",
       "4       24.59  3.61  Female     No  Sun  Dinner     4"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tips = sns.load_dataset('tips')\n",
    "tips.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEOCAYAAACD5gx6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xt4VOW9L/DvWnOfCcnkBgQIMQlI\nIAIJBCQ1yqXadG9RTjEoxeLTVlrTlrp3qXa7T2/Uy3n0aY+9KVjpRQEtVmyNfbDWtoR9ihqKQMAQ\nIAEGCAm532cy93X+mExgyGUmyUzWzOL7ecwTsrJm5vfOjN958653vUuQJEkCEREpjih3AUREFBkM\neCIihWLAExEpFAOeiEihGPBERAqllrsAv5aWnrDenyAISE42oa3NCiVNFFJiu9im2MA2RafU1EnD\n/k6xPXhR9L14osJaqMR2sU2xgW2KPQptFhERMeCJiBSKAU9EpFAMeCIihWLAExEpFAOeiEihGPBE\nRArFgCciUigGPBGRQkXNUgV01YHK+mF/JwoCTCYdrFYH7lg4bQKrIqJYwx48EZFCMeCJiBSKAU9E\npFAMeCIihWLAExEpFAOeiEihGPBERArFgCciUigGPBGRQjHgiYgUigFPRKRQDHgiIoViwBMRKVRI\nAV9dXY2SkhLk5eVhzZo1qKysHHK/u+++GwsXLkR+fj7y8/Nx9913h7VYIiIKXdDlgh0OB0pLS1Fa\nWop169ahrKwMmzdvxv79+6HVagf2s9vtsFgsOHjwIJKSkiJaNBERBRc04CsqKiCKIjZs2AAAKCkp\nwauvvory8nIUFxcP7FdTU4OUlJQxh7sgCBDDOGAkikLA91giCsPXLIhXv6tUsde2ocTyazUctik2\nKLFN1woa8BaLBdnZ2QHbMjMzUVtbGxDw1dXVUKvVeOCBB3Dx4kXMmzcP3/3udwfddjjJySYIIwTb\nWJnNprDfZ6SZTLqg+xgNOiQlxU1ANRMnFl+rYNim2KDENgEhBLzNZoPBYAjYptfrYbfbB+07f/58\nPP7440hJScG2bdvwla98Be+++y70en3QQtrarGHvwZvNJnR2WuH1SuG74wlgtTqG/Z0g+sLd1udA\ne3vvBFYVObH8Wg2HbYoNSmjTSB29oAFvMBgGhbndbofRaAzYtn79eqxfv37g529961t47bXXcOrU\nKeTn5wctUpIkeDxBdxs1r1eCxxNbL5xXGr5e0ev7K0fyIubaFUwsvlbBsE2xQYltAkKYRZOVlQWL\nxRKwzWKxYNasWQHb3njjDXz44YcDP3s8Hrjdbuh0wYcbiIgo/IIGfGFhIZxOJ3bt2gWXy4W9e/ei\ntbUVRUVFAfs1NzfjmWeewZUrV2C32/Hss88iKysLOTk5ESueiIiGFzTgtVotduzYgX379mHp0qXY\nvXs3tm/fDqPRiE2bNuGll14CAJSWlqKoqAjr1q1DYWEhLl26hBdffBFiOAfWiYgoZIIkjTDgO4Fa\nWnrCen8qlYCkpDi0t/fG3Njagcr6YX8nCgJMJh2sVgfuWDhtAquKnFh+rYbDNsUGJbQpNXXSsL9j\n95qISKEY8ERECsWAJyJSKAY8EZFCMeCJiBSKAU9EpFAMeCIihWLAExEpFAOeiEihGPBERArFgCci\nUigGPBGRQjHgiYgUigFPRKRQDHgiIoViwBMRKRQDnohIoRjwREQKxYAnIlIoBjwRkUIx4ImIFIoB\nT0SkUAx4IiKFYsATESkUA56ISKEY8ERECsWAJyJSKAY8EZFChRTw1dXVKCkpQV5eHtasWYPKysoR\n99+7dy9uvfXWsBRIRERjEzTgHQ4HSktLsXbtWhw+fBgbN27E5s2b4XQ6h9y/rq4Ozz77bNgLJSKi\n0VEH26GiogKiKGLDhg0AgJKSErz66qsoLy9HcXFxwL4ejwff+c53cP/99+Ott94aVSGCIEAM44CR\nKAoB32OJKAxfsyBe/a5SxV7bhhLLr9Vw2KbYoMQ2XStowFssFmRnZwdsy8zMRG1t7aCAf/nllzF7\n9mwsX7581AGfnGyCMEKwjZXZbAr7fUaayaQLuo/RoENSUtwEVDNxYvG1CoZtig1KbBMQQsDbbDYY\nDIaAbXq9Hna7PWBbVVUVysrK8NZbb6GqqmrUhbS1WcPegzebTejstMLrlcJ3xxPAanUM+ztB9IW7\nrc+B9vbesD1m+dH6oPusXDQ9bI93rVh+rYbDNsUGJbRppI5e0IA3GAyDwtxut8NoNAb8/MQTT+Dp\np5+GyTS2T0JJkuDxjOmmI/J6JXg8sfXCeaXh6xW9vr9yJC/C2q6RHtMv0s9jLL5WwbBNsUGJbQJC\nOMialZUFi8USsM1isWDWrFkDP1dVVaGurg6lpaUoKChAaWkpurq6UFBQgIaGhvBXTUREQQXtwRcW\nFsLpdGLXrl1Yv349ysrK0NraiqKiooF9CgoKcPz48YGfDx06hEcffRSHDh2KTNVERBRU0B68VqvF\njh07sG/fPixduhS7d+/G9u3bYTQasWnTJrz00ksTUScREY1S0B48AOTk5GDPnj2Dtv/6178ecv9b\nb72VvXciIplxqQIiIoViwBMRKRQDnohIoRjwREQKxYAnIlIoBjwRkUIx4ImIFIoBT0SkUAx4IiKF\nYsATESkUA56ISKEY8ERECsWAJyJSKAY8EZFCMeCJiBSKAU9EpFAMeCIihQrpik4UPZwuD7paeiFC\ngtcrQRQFuUsioijFgI8hFxt7cKi6CXanBwDwzgcXUDQ/Des/PQsatUrm6ogo2jDgY4DXK+HDqkac\nb+gO2O5ye1F+rB4XGrvxjc/NR1K8XqYKiSgacQw+Bpy0tA+E+9QkIz7/mTlYU5SJ1Z/KAABYrvTg\nyVcOo6ndJmeZRBRlGPBRrqvXiePn2gAAs2YkoHhpOpLi9UicpMPaO7Lxzfvmw6BTodvmws/2noDV\n7pK5YiKKFgz4KCZJEipONsLrlWDUqVEwJxWCEHhQNX92Kh69bwFUooCmdhu2/akKbo9XpoqJKJow\n4KPY2fouNHX0AQBuzZ0CrWboA6lzZiZiY/EcAMCpix14Y//ZCauRiKIXAz5KSZKEk+fbAQAzp8Qh\nfXLciPvfsXAaPrMkHQDwjyOX8a9TTRGvkYiiGwM+SjW229Bt842n35KVHNJt1q3Mxs3pZgDA7/5y\nGlfarBGrj4iiHwM+Sp251AkASE7QIyUhtOmPKlFE6ZpcxJu0cDg9ePFPVehzuCNZJhFFsZACvrq6\nGiUlJcjLy8OaNWtQWVk5aB+n04mtW7di2bJlWLx4Mb72ta+hqYnDBGNhs7tQ19wLAJjT3yMPlTlO\nh9J7cyEIQEOrFS+VnYTHy4OuRDeioAHvcDhQWlqKtWvX4vDhw9i4cSM2b94Mp9MZsN+LL76Ic+fO\n4b333sNHH30Es9mMp556KmKFK1nt5S5IEqDViLgpbdKob5+TkYgH77oZAPDJ+Tbs+Ud4DroeqKwP\n6YuIokPQgK+oqIAoitiwYQM0Gg1KSkqQmJiI8vLygP0effRR7NixA2azGW1tbbBarUhMTIxY4Url\n9UqoqesCAGRPS4BaNbZRtFWLZuDOxTMA+A667j1wDl5JCludRBT9gi5VYLFYkJ2dHbAtMzMTtbW1\nKC4uHtimUqmgUqnwy1/+Ei+++CImT56M1157LeRCBEGAGMYjAv5FuGJtMa5zDV0D4+ZzZpohXjfv\nXRCvflepRm7bg5+5Ga3ddlTWtuLdioto77Fj0+p50KgHP9HXP854BKtr0GPH6Gs1ErYpNiixTdcK\nGvA2mw0GgyFgm16vh91uH3L/r371q/jKV76Cn/zkJ3j44Yexb98+aDSaoIUkJ5sGncQTDmazKez3\nGUknD14AACRO0mH6lPhh9zMadEhKGnnqJAD8YFMhXnizEvs/rkPFySbUt9rwYHEOCuenBbypTSbd\nuGv3C6WuocTaaxUKtik2KLFNQAgBbzAYBoW53W6H0Wgccn+dzhcU3/nOd7Bnzx7U1NQgNzc3aCFt\nbdaw9+DNZhM6O63wemNjaEKSJHxw3DeGPSM1DlarY9A+gugLd1ufA+3tvSHd70OfmY14gxpv/9OC\nuqYePLvzMCYnGjBregLSp8TBoFWj9nInVKIAURCg1aiQkqAf9sSqYEKtyy8WX6tg2KbYoIQ2jdSh\nChrwWVlZ2L17d8A2i8WC1atXB2z77//+b8yfPx8bNmwAAHg8Hni9XsTHD98LvZYkSfB4Qtp1VLxe\nCR5PbLxwl5p60NLp+zBNn2Iacsxc9Pp63ZIXo2rXvbdl4pbMZLz9z/OosrSjuaMPzR19QNXQ+wsA\nkuJ1mD3DjFnpCaMawhnr8x1Lr1Wo2KbYoMQ2ASEcZC0sLITT6cSuXbvgcrmwd+9etLa2oqioKGC/\nBQsW4Le//S0uX76Mvr4+PPPMM1i8eDHS09MjVrzSHKttBQAY9WokR2Dp36xp8djyQB6++9Bi/K/b\nM5E/OwVTk4xIjtfDoFNBqxGh7h8/lwC0dTtQUd2E9youoa1r6CE5IopeQXvwWq0WO3bswNatW/H8\n888jIyMD27dvh9FoxKZNm1BQUIDS0lKsX78ebW1t+PznPw+Xy4XbbrsNP//5zyeiDYpxtKYFAJA+\nOS4ixyP8sqclIHtaQsC2a6c3OpweNHf24XxDNy429qC1y46/VFzEikXTMSN1bOPrRDTxBEmKjrlz\nLS09Yb0/lUpAUlIc2tt7Y+JPr5bOPvzXSx8BAO5aMgNpyUMf9BEFASaTDlarA3csnBa2xx9u/vqV\nNis+qmpCb58LKlHAnQUzMCVp6OMvfivypo/qsWPttQoF2xQblNCm1NThz5XhFZ0m2HBBeupCBwDf\nyU1TEkcO0ImUlmxC8a3peK/iEqx2N/YfqUfxrem8ehRRDOBaNFHCvzDYtGRT1M3JNek1uGtJOvRa\nFVweL/55/AqXPyCKAQz4KOD1Smjsv9xeWkr09N6vFW/SYmW+b+ily+rEiXPtMldERMEw4KNAS1cf\n3P3jf8ONvUeD1EQD5mb4lp+oOt+G9m7OrCGKZhyDjwJXWn2990lGDeIMwc/6HY1wL/6Vf3MKLrf0\nosfmwodVjbi7MCOiM36IaOzYg48C/vH3aO69+6lVIgpzpwIA2rsduNAY3tlPRBQ+DHiZOV0etPaf\nRDQtSsffrzc12Yjpqb4Po8ra1pg9xZtI6RjwMmvq6IMk+ZYGmBpkfnk0yZ+dAgDosblwrqFL5mqI\naCgMeJk1tPqGZ5LHsbiXHJLi9ciY6jvB4sTZNk6bJIpCDHiZDUyPTI6d3rvfwlnJEABY7W6cvdwt\ndzlEdB0GvIzsTje6en2XPgx2+n80MsfpkNF/ScHqC+2IklUviKgfA15GzR19AABBAFLNhiB7R6fc\nm5IA+Mbi/RcKJ6LowICXkT/gk+L1Q15GLxYkJ+gHDg5X96+nQ0TRITZTRSGa+gN+SmJs9t795mX6\nzm5t7uhDS2efzNUQkR8DXiYut3fgVP/JMR7w01NMSIjTAmAvniiaMOBl0tLpm/8OxH7AC4KAeTf5\nevGXmnq4Rg1RlGDAy8Q//p5g0kKvjf0lgTLT4qHViJAk4EBlg9zlEBEY8LLxB3ys99791CoRs2f4\nLgP4/yrr4XLzxCciuTHgZeDxSgMHI6ckKSPgAWBOeiIEAN02Fz4+3Sx3OUQ3PAa8DNq77fD0L9A1\nOYouzzdecUYNZkz2XZT770cuy1wNETHgZeCfHmnUq8O+/rvc5sw0AwAsV7pxvoHLFxDJiQEvg+b+\n9Wdiff77UNKSjQPr6vyDvXgiWTHgJ5gkSWju9B9gVc7wjJ8gCFi1aAYA4PDpJnRbnTJXRHTjYsBP\nsM5eJ5wu3wwTJfbgAeBTt0yFXquC2yPhf45zyiSRXBjwE6y5wzc8o9WIA2d/Ko1Bp0bR/DQAwIFj\n9XB7OGWSSA4M+AnW1HF1eEbJF6tetdg3TNPR40BlbavM1RDdmBjwE0iSJDS3K2OBsWCmJhlxS6Zv\nKWFOmSSSBwN+ArV22WFzuAEo5wzWkfh78TV1nVwrnkgGIQV8dXU1SkpKkJeXhzVr1qCysnLI/bZt\n24YVK1agoKAAGzduRE1NTViLjXU1dZ0AALVKQHK8XuZqIm9BVjJSzb52csok0cQLGvAOhwOlpaVY\nu3YtDh8+jI0bN2Lz5s1wOgOnv/3xj39EWVkZdu3ahYqKChQWFuKRRx6BlxdjHlB7uQsAkJJggCgq\nd/zdTxQFrMz39eIrTjbCanfJXBHRjSVowFdUVEAURWzYsAEajQYlJSVITExEeXl5wH4dHR0oLS1F\neno61Go1HnroITQ0NKCxsTFixcea2su+HvyNMDzjd/vCNGg1IpxuL/55/ErA7w5U1uNAZT3Kj9bj\nvY8uoPxo/cA2/xcRjV3QdWotFguys7MDtmVmZqK2thbFxcUD2x5++OGAffbv3w+z2YypU6eGVIgg\nCBDDeETA30OOlp5yt9WJK22+KZJTk4wQxziDRhCvflepgt/HWB9nPK6tK96kxadumYoDxxpQfqwe\n/7Zs5tXXpr+2a9skeoVh7yuWRNv7LxzYptgTNOBtNhsMhsAep16vh90+/EUdDh8+jB/+8Id48skn\nIYaY2snJpohMGzSbTWG/z7E4U+/rvQoCcNP0BGjUqnHdn9GgQ1JSXND9TCbduB5nLK6v675Pz8GB\nYw1o6ezD+WYrls6bOmRtRsPgWkNpYzSLlvdfOLFNsSNowBsMhkFhbrfbYTQOfZr922+/jR/96Ef4\n/ve/j3vuuSfkQtrarGHvwZvNJnR2WuHtX7lRTkdP+YaqkuP1cDrccPbPphktQfQFoa3Pgfb24DNT\nrFbHmB5nPK6vK14nImemGacvdeJP5bWYNTUuoLZr2yR5R76vWBFt779wYJui00idoKABn5WVhd27\ndwdss1gsWL169aB9X3zxRezcuRPbtm1DYWHhqIqUJAkez6huEhKvV4LHI/8Ld+aS71qlkxMN8Epj\nr8c/hCF5EVK7xvNYYzVUXasWzcDpS52oOt+Oy829SEs2DdR2bZuurzcaXrvxiJb3XzixTbEjaJ+5\nsLAQTqcTu3btgsvlwt69e9Ha2oqioqKA/d566y28+uqreP3110cd7krncHpwsdHXE72RDrBeK//m\nFCRO8g3B7D/Kg6dEEyFowGu1WuzYsQP79u3D0qVLsXv3bmzfvh1GoxGbNm3CSy+9BAB4+eWXYbVa\nUVJSgvz8/IGvc+fORbwR0e5cQ9dAz/RGDXiVKGJF/nQAwAefXEHfGIeoiCh0IV3tOScnB3v27Bm0\n/de//vXAv//617+GryqF8Z/glJZsVMQFtsdq+cJp+PMHFtidHnxY1RizM2SIYgWXKpgA/hOc/Bel\nvlHFm7RYOncKAGD/0cuQZDg+QHQjuXG7kxPE7fHiXIM/4M1w3eBL53568Qx8WNWIK202XGmzYVrK\nxE1PC/XEqRV50yNcCdHEYA8+wuqaewcu8DE73SxzNfLLTItH1rR4AMCZS50yV0OkbAz4CPOPv5vj\ntEhNUP4CY6H4dP8l/S4396LXxvVpiCKFAR9h/oC/Od2s6At8jEZBzmTEGzWQAJyp65C7HCLFYsBH\nkCRJ1xxg5fCMn0YtYnn/OHdNXRecrgic4UZEDPhIamy3obfPNwRxo8+gud6nF8+AShTgcntxmmPx\nRBHBgI8g//CMQafCjNTYXjQr3OJNWszq/9CrvtDOC3MTRQADPoL8wzOzppsVuxzpeORmJkEQALvT\ng1OWdrnLIVIcBnwEXT3AyuGZocQZNMhK802ZPFrTHLOr+RFFKwZ8hHT0ONDa5VtmmQdYh5eblQQA\n6LW5cP5Kt8zVECkLAz5Crr3AdmbaJJmriV7mOB0ypviOT3xyro3LFxCFEQM+Qvzrv2elxY/76k1K\nNz87GQDQZXWirjk2L/BBFI0Y8BFyqn/qX05GosyVRL+UBAPSJ/t78e3sxROFCQM+Ajp6HGhq911g\nO2cmAz4Ui3J8q0y2ddsHLk5OROPDgI+A0xd9wzMatYjs6fEyVxMbpqeakGr2rdVz/Gwre/FEYcCA\nj4BT/ePvs6YncPw9RIIgYOGsFABAS6cdDa1WmSsiin0M+Ajw9+BzZnJ65GhMTzENXNLwWC178UTj\nxQt+hFlrZ9/A/PdIH2AN9QIWsUIQBOTPTsFf/1WH9m4HLjVxRg3ReLAHH2b+4RmdRoXMNI6/j9aU\nJCPSko0AgMraVni8XKOGaKwY8GF2+qJveuTsGQlQq/j0jkX+zb6x+C6rEweONchcDVHsYgKFkSRJ\nOHXRt2gW57+PXUqCYeCyfm//8zysdl71iWgsOAYfJgcq69HR40BnrxMAYHe6FTdGPpHyb07BpaYe\nWO1ulB20YMOdN8tdElHMYQ8+jPxT+/RaFRIn6WSuJraZ9BrkZvoWIis/Wo96TpskGjUGfBj5A35a\nionXXw2D3MwkJMfr4PFK+N27p7icMNEoMeDDxO3xoqmjDwAwLcUoczXKoFaJeOizOQCA8w3deP9w\nncwVEcUWBnyYNLXbBnqYackmmatRjvlZyShakAYA+NM/z+NKG4dqiELFgA+ThlbfAllJ8ToYdDx2\nHU7rV81C4iQdXG4vfvXOSTicHrlLIooJIQV8dXU1SkpKkJeXhzVr1qCysnLE/Z9++mk899xzYSkw\nVgyMv7P3HnZGvQZf+vccCAAuNfXiN++e4jIGRCEIGvAOhwOlpaVYu3YtDh8+jI0bN2Lz5s1wOp2D\n9u3o6MATTzyBXbt2RaTYaNXWZUeX1fd8TEthwEfCLZnJKFmZDQD4+HQz3vnggrwFEcWAoAFfUVEB\nURSxYcMGaDQalJSUIDExEeXl5YP23bBhA1QqFYqLiyNSbLSqPNsKwLc8cGr/YlkUfp9dOhOFuVMB\nAGUHLXjnoIU9eaIRBB0stlgsyM7ODtiWmZmJ2traQUH+yiuvYMqUKXjiiSdGXYggCBDDeERAFIWA\n75HkD/jpqSZoIrw8gSBe/S56o3MqpkoVWl1i/1TSkdoUeF8Cvrw6B529Dpy62IG3D1rQaXXgoc/O\ngSqEN48Y4tTVUOsf8bEm8P03Udim2BM04G02GwyGwF6pXq+H3W4ftO+UKVPGXEhycmTmjpvNkR0y\nsfa5Bq6/Ojs9ESbTxJzgZDRE74lUSUlxIe13/XM1VJuGuq9nvn4bnn/9KA4eb8CBYw240NiLr923\nAPMyk0f1eMMJtf5QRPr9Jwe2KXYEDXiDwTAozO12O4zG8M71bmuzhr0Hbzab0NlpjegJMoeqm+D2\nSBAEICVeB6vVEbHHAny9XKNBB1ufA1KULrTY3h7aMr/+52qkNg13Xw/fnYM4vRrvHbqEC1e68V8v\nHMSim1OxPG8a5mcnDdmjD/W1CbX+kUzU+28isU3RaaQOSdCAz8rKwu7duwO2WSwWrF69evyVXUOS\nJHgiMPvN65Xg8UTuhTtypgWAb5lbjVqEN8Jjwv4hDMmLiD/WWIX6fPvrH6lNI93X/StnIW9WCna/\nX4PLLb04WtOCozUtiDNoMO+mRORkJGJuRiImmw0QBCHk5yuc75dIv//kwDbFjqABX1hYCKfTiV27\ndmH9+vUoKytDa2srioqKJqK+qOb2eHHiXBsAIH1y+P6sj3UTucjazelm/PBLBfioqgkHTzSg5nIX\nevtc+NepZvzrVDMAIDleh/lZydDr1Eg167mMBN0wgga8VqvFjh07sHXrVjz//PPIyMjA9u3bYTQa\nsWnTJhQUFKC0tHQiao06NXWd6HO4ATDg5aQSRRQtSEPRgjQ0ddhw4mwbTl3swJm6DvQ5PGjrduBA\npW9d+XiTFguyk5GZNolBT4onSFEyz6ylpSes96dSCUhKikN7e2/E/vTa/f4Z7D9aj/TJcVi5aHpE\nHuN6oiDAZPKN9UfrEM1ojdSmFXljf149Xi8uNvbi5IV2HKpuCriQd0qCHkvnTUFKgn7Q7cbzmH4T\n8f6baGxTdEpNnTTs77hUwRh5vF4cPu0bAlg8J1XmamgoKlFE1rR43POpm/DUw0vx78tmYkaqb7ZE\na5cd71VcxOlLHZxLT4rFgB+jUxc60GPzXWlo2byxTw+liSEIAlLMBqxaPAN3FszAJKMGXgn4V3Uz\nPvikkdd+JUViwI/RoeomAEBmWjwmJ3J54FgyLcWEuwszBo6bnG/oRvnRBrg9DHlSFgb8GDhdHhyp\n8U2PZO89Nmk1KqzIn4YF2b6Toxpardh/pB4uN0OelIMBPwYnzrXB7vRAEIAlcyfLXQ6NkSAIyJud\ngkU3pwAAGtttKD/KkCflYMCPgX94Zm5GIsxx0btkAIXmlqxkFOT4DpQ3ttvw8jsnOSZPisCAH6Ue\nmxPHz/kWF7t1LodnlGLeTUnIm+UbrjlS04Kd753h7BqKeQz4UTr4yRW4PRJ0WhUKcjg8oyTzs5Mx\nNyMRAPDPE1fw5oFzMldEND4M+FHwShL+55jvjMjCeVN4aT6FEQQBBTmpKMz1/WX23qFLeLfiosxV\nEY0dA34Uqi3taO7sAwCsyJ+YM1dpYgmCgC/9+1zkzfIdeN174Bz+ZwLX1iEKJ3ZBR6H8mO9/9Ozp\n8Zg5ZfjTgyl8Ql24LBzLC/ipVSJK1+Ti+T8cR01dJ3b+9QxMeg2H5CjmsAcfovZu+8CVm1ay9654\nWo0Kj963ADOnxEGSgJf/fBInL7TLXRbRqDDgQ/S3j+sgSYBJr0bBHPbkbgRGvRpb7s/DlEQD3B4J\nL7z1Cc41dMldFlHIGPAh6LY6B4Zn7ixIh1ajkrkimijxJi2+vT4PiZN0cLg8+NkfjqO+ZfxXfCKa\nCByDD8FfD1+C0+WFQafCnQUz5C6HJlhKggFbHsjDs7uPwGp34/++UYlvr8/H9JTwXMdTjuMMdGNg\nDz6IHpsT+4/4/gf89OJ0mPQamSsiOUxPMeFb9+dBp1Ghs9eJ/7PrY1RZ2uQui2hEDPgg3j9cB4fL\nA51Whc8sSZe7HJJR1rR4PLY+D5OMGvQ5PPjZH07gvUOXFHPhFVIeBvwIWjr78P7hOgDAqkXTEWdg\n7/1Glz09Ad9/qADTU0zwShL+UH4WP/n9MbR12eUujWgQBvwIXv9bDVxuL+JNWty9LEPucihKpJgN\n+N8bF6MwdyoA4PSlTnzv14cQQRtlAAAOlUlEQVRQdtACu9Mtc3VEV/Eg6zCO1bbg+DnfGOsDK2fB\nyLH3qBbqgcpwOXSqCbPTE6DRiKg42QiHy4Oygxb89V+XkJORiDnpZqQkmbB0TsqE1kV0LQb8EPoc\nbrz+t1oAwJx0M5blctVIGtpNUychLcmIT8634fTFTtidHlTWtuLE2VZkpMXD6XBhflYyh/dIFgz4\n60iShN/95TTauu1QiQK+UDwHgiDIXRZFMf/KojkzE3HqYgfO1nfB5fbC0tCNHQ3VEABMTzVh1gwz\nZk6Ow7QUE9KSjZhk1MpdOikcA/46fztch49PNwMA1q2cFba5zqR8cUYNlsydjLzZKbjU2IPLrVbU\nt/TC7ZFwucWKyy3WgP0nGTVISzZBkiTEm7S+L6MGk4xaiCI7FTR+DPhrnLrYgT+U+9YAL8iZjLt4\nUtMNabzj+Rq1iNnpZuTlTMH8m8w4c6kTtZc7ca6+Gw2tVnRZnQCAHpsLPbbOQbcXBQGJ8TqkJOiR\nHK9HcoIeCXHs7dPoMeD7nbrQjp/vPQGvJGFqkhFf+rccDs3QuBl0aszPSsb8rOSBbb19Llxps6Kh\n1YorbTZUX2hHt9WJnj4XJMl33YG2LnvA1EutRsTpi524JTMJt2QmISleL0dzKMYw4AFUnW/DL//4\nCVxuL5LidfjPdQt4MQ+KmDiDBrNnmDF7hhnA1b8YvF4JvX0udPQ40Nof8G1ddrg8XjhdXnx8unlg\n+DAt2YhbMpNxS1YSbk43Q8f1kWgIN3SKuT1evPPBBez76AIkCUhJ0OPxz+cj1WyQuzS6AYmiMDAW\nnzHVd70BSZLQZXWisc0Gh9OD05c64XB5cKXNhittNvzt4zqoVQKypiUgZ6YZOTMTkT09Hho1A59u\n4IA/e7kLe/bX4nxDNwDfWiP/uW4hkhP4py9FD0EQYI7TwRynw4q86XC5vThb34WTlnZUWdpwqcl3\nELemrhM1dZ1454MLUKtEZEyNw4zUOExPMWFGahxmTI4LmKoZrQuchbuuYPcnCgLuu3NOSPcVi0IK\n+OrqavzgBz/A2bNnkZGRgR/96EfIy8sbtN8rr7yC3/zmN7BarVi1ahWefPJJGI3GsBc9Vm6PFyct\n7fj7kcs4abl68YZPL5qBdSuzuQwwRT2NWsTcjETMzUhEyYpsdFmdOHOpA6cvduD0pU40ttvg9nhx\nrr4b5+q7A25r0KmQOEnvW/rY6YFRr4Zeq+r/UkPX/2+dRiXrLB5JkiABQP8SP/6VfgQAgoBxHxvz\n378kAZLg+1mpBClI6xwOB+666y6UlpZi3bp1KCsrw89+9jPs378fWu3VI/vl5eX4wQ9+gJ07dyIl\nJQVbtmxBdnY2nnjiiZAKaWnpGV9LrqNSCdAbdTh1tgVn67twtr4Ln5xrg9V+9VTyGalxWLcyO+AA\n2FhN1JmUoiDAZNLBanUoZpErJbdp6ZwUeDwjtymcvdaOHgfO1HXgUlMvLrf0or7Fio4eR0j3fy2t\nRoReq8aURAMmGbWYZNQg3qTF1JQ4qCBBp1FBq1FBqxGhU6ug0YhA/wFij1eC1+v7bnO40Wd3w+Zw\nw9b/3fezC30OD+xON+xOT/+XG9Y+N1web9D6BMH3HIuicPXf1/3slSQ4XB5fkEsSvP3fr3+LCYLv\nMo0alQiNWoROq0KcQYM4gwYmvab/32rfzwbNwO/8P8t9/CM1dfjLhwbtwVdUVEAURWzYsAEAUFJS\ngldffRXl5eUoLi4e2K+srAwlJSXIzMwEAPzHf/wHvvjFL+Lxxx+HShW5J6Cp3YbyY/XosTkH3kA2\nh9s3K8HmGvI22dPjUbxkJhbNSYXImTKkIImTdFg2byqWzbu6zWp3oaHVirZuOzp6HOjodqDmcids\ndvdAsLqv+xByurxwupzo7p/SGW0kCfD0f5iE475cbi9cbi/gAGAFmjv6Qr69Ri32fxioodOooFGL\n/R9+Kmj9/1aLvr8+IKD/PwjC1Q+jJTmTMWNy3Ljbcr2gAW+xWJCdnR2wLTMzE7W1tQEBf/78edx1\n110B+/T09KCpqQnTpk0LWoggCBDHsPTZOx9ewEdVjSPuM8moQfb0BMzNSMSSnMkRGWefqA8KQbz6\nXfQq48NJyW0KZagj1PeOSjW258Z/4PZa5UcD/2pwe7xwXNOT9veqpyQZ+ufr+zpMVrsbnT0O9Dnd\ng3rCw9FpVDDq1TDq1TDo1DDp1DDo1TBo1dDrVAPf9Vo1ztV3QaMWB56T658af298fnYyvF5pYFqp\nV5ICfpYk321PX+wcCFH/8I4oXA1XQQCWLZiOjk4bnC4PnG4v7A43evtc13y50WtzwWp3ocfmgsPl\nCajJ5fb6PjjH8JeS38kL7fjhl5aM+fbDCRrwNpsNBkPgrBK9Xg+7PXB51L6+Puj1V4PTf5u+vtA+\nCVNSxvbp9b+/dOuYbhduSj5QQ5Elx3vnRnm/3iN3ATIL2mc2GAyDwtxutw86eKrX6+FwXP0E8we7\nycRT/YmI5BA04LOysmCxWAK2WSwWzJo1K2BbdnY2zp8/H7DPpEmTMHny5DCVSkREoxE04AsLC+F0\nOrFr1y64XC7s3bsXra2tKCoqCtjv3nvvxRtvvIHa2lr09vbiF7/4Be655x6IYxlYJyKicQs6TRIA\nTp8+ja1bt+LMmTPIyMjA1q1bkZeXh02bNqGgoAClpaUAgJ07d+KVV15Bd3c3li9fjqeffnrQ+D0R\nEU2MkAKeiIhiD8dPiIgUigFPRKRQDHgiIoViwBMRKZQiA766uholJSXIy8vDmjVrUFlZKXdJ4/bx\nxx9j3bp1WLx4Me68807s2bNH7pLCprW1FYWFhSgvL5e7lLBobGzEI488gkWLFuGOO+7Azp075S5p\n3I4ePYq1a9di0aJFKC4uxp///Ge5SxqzEydOBEzz7urqwje+8Q0sXrwYK1aswJtvviljdWEmKYzd\nbpduv/126bXXXpOcTqf05ptvSrfddpvkcDjkLm3MOjs7pSVLlkhlZWWSx+ORqqqqpCVLlkgffPCB\n3KWFxVe/+lUpJydH2r9/v9yljJvX65U+97nPSc8++6zkdDqlmpoaacmSJdKRI0fkLm3M3G63tGzZ\nMukvf/mLJEmSdPjwYWnevHlSXV2dzJWNjtfrld58801p8eLF0tKlSwe2f/Ob35Qee+wxyW63S8eP\nH5eWLl0qnTp1SsZKw0dxPfhrV7/UaDQoKSlBYmJiTPcOGxoasHz5ctx7770QRRG5ubm49dZbcfTo\nUblLG7ff//73MBgMSEtLk7uUsDh+/Diam5vx2GOPQaPRYPbs2dizZ8/AKquxqLu7G+3t7fB4PJAk\nCYIgQKPRRHSV2Eh46aWXsHPnzoHzdgDAarXi73//Ox599FHodDosWLAAq1evVkwvXnEBP9Lql7Fq\n7ty5+PGPfzzwc1dXFz7++GPk5OTIWNX4XbhwAb/73e+wdetWuUsJm5MnT2L27Nn48Y9/jNtuuw3F\nxcU4fvw4EhMT5S5tzBITE7FhwwZs2bIFubm5ePDBB/H9738/5j6U77vvPpSVlWH+/PkD2y5evAi1\nWo309PSBbbGeF9dS3CX7Ql39Mlb19PSgtLQUubm5WLVqldzljJnb7cbjjz+O7373uzCbzXKXEzZd\nXV04dOgQli1bhvLyclRVVWHTpk1IT09HQUGB3OWNidfrhV6vx89//nOsWrUKH374Ib797W8jNzc3\npjoZQ62LZbPZAlbBBZSVF4rrwYe6+mUsqqurw/r165GQkIAXXnghptf52bZtG+bOnYvly5fLXUpY\nabVaJCQk4JFHHoFWqx04KPmPf/xD7tLG7P3338eJEyfw2c9+FlqtFitWrMCKFSvw9ttvy13auCk5\nLwAFBnyoq1/GmpMnT+L+++9HUVERtm3bNqjXEWveffdd7Nu3DwUFBSgoKEBDQwO2bNmCl19+We7S\nxiUzMxN9fX1wu69eGtI/dh2rrly5Aqcz8MpOarUaanXsDwBkZGTA7XajoaFhYJsS8mKA3Ed5w83h\ncEhFRUXSzp07B2bRLFu2TLJarXKXNmYtLS3SsmXLpF/96ldylxIxK1euVMQsmr6+Pun222+Xnn32\nWcnlcklHjhyR8vLypGPHjsld2pidPn1ays3Nlfbu3St5vV7p0KFDUn5+vnTixAm5SxuTioqKgFk0\nmzdvlrZs2SLZbLaBWTSVlZUyVhg+iuvBa7Va7NixA/v27cPSpUuxe/dubN++Pab/5Nq7dy/a29ux\nfft25OfnD3z99Kc/lbs0uo5er8euXbtQU1ODT33qU3jsscfwve99D3l5eXKXNmZz5szBL37xC+zc\nuROLFy/Gk08+ieeeey7gYGUse+qpp+B2u7F8+XI8+uijePzxx7Fw4UK5ywoLriZJRKRQiuvBExGR\nDwOeiEihGPBERArFgCciUigGPBGRQjHgiYgUigFP1O/06dOoqKjA5cuXMWfOHNTU1MhdEtG4MOCJ\n+n3961/H2bNnkZaWhoMHDyIrK0vukojGJfYXkyAKM5VKhdTUVLnLIBo39uCJAGzcuBH19fV46qmn\n8MQTTwQM0axatQq/+c1vcN9992HhwoV48MEHFbNeOCkbA54IwC9/+UtMnToVW7ZswRe/+MVBv3/h\nhRdw//3346233kJycjI2bdqkmDXDSbkY8EQAzGYzVCoVTCYT4uLiBv3+nnvuwQMPPIBZs2bhmWee\nQXd3d0xfBpJuDAx4ohAsXrx44N+TJk1S1GXdSLkY8EQhuP7iFh6PJ6avqEU3Br5DiUJQXV098O/u\n7m5cvHgxpq5HSjcmTpMk6mcymWCxWIa8OMfrr7+OW265BbNnz8ZPf/pTTJ06FXfccYcMVRKFjgFP\n1O/BBx/Ec889F3B9Tr/Pfe5z+NWvfgWLxYKlS5fit7/9LbRarQxVEoWOV3QiCmLVqlX48pe/jC98\n4Qtyl0I0KhyDJyJSKAY8EZFCcYiGiEih2IMnIlIoBjwRkUIx4ImIFIoBT0SkUAx4IiKF+v9rLq3E\nUnAWYgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a1d5f4f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(tips['tip'], bins=25);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we have covered previously, if we choose a constant model and the mean squared error cost, our model will predict the mean of the tip amount:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.9982786885245902"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(tips['tip'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This means that if a new party orders a meal and the waiter asks us how much tip he will likely receive, we will say \"around \\$3\", no matter how large the table is or how much their total bill was.\n",
    "\n",
    "However, looking at other variables in the dataset, we see that we might be able to make more accurate predictions if we incorporate them into our model. For example, the following plot of the tip amount against the total bill shows a positive association."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVQAAAFlCAYAAAC0tBC9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsvXmcFNXV//+p6uq9Z2dwhlUQZF9V\nUEGNiMEF3JOvinF5RIJLfH5iNCauMUHj9opR45NNiSuaQCIxASMoUdEgIMuAAjIoDAwzMPtM77X9\n/qiuml6qe6pnep/zfr1cprZ7b1X1p+6959xzGFmWZRAEQRB9hs12BQiCIAoFElSCIIgUQYJKEASR\nIkhQCYIgUgQJKkEQRIogQSUIgkgRXLYrQCTHfffdh7///e8Jj3n11VdRX1+Pn/70p6ipqYHVas1Q\n7XKL7du3IxgMYubMmVkpf86cOaivr094zL59+wxdq76+Htu2bcOCBQsMHS8IAiZMmIBf/vKX+N73\nvhd3fzgWiwVDhgzB1VdfjRtuuEHbfs0112Dw4MF4+umn8dlnn+Gmm27C+++/j+HDh0fsI0hQ8477\n778fd999t/b3JZdcgssuuwz/8z//o20rKSnBlClTcNZZZ/VbMQWAq6++Go888kjWBHXlypUQRREA\ncOjQISxcuBDPP/88pk2blvS17rnnHgwaNMiwoBrlvvvuw/z58wEAPp8PW7duxUMPPQSr1Yqrr74a\nAPB///d/MJlMKS23UCFBzTOKiopQVFSk/c2yLBwOByorK2OOtdlsmawaEUV5ebn2/52dnQCUj53e\ns+qJdK2/cblcEfUZNmwYPv30U6xatUoT1NLS0rSUXYjQHGqB8re//Q1jxoxBIBAAoAw/X3zxRdx6\n662YPHkyvvOd7+APf/hDwh/qsWPHcM8992DWrFmYMGECzjzzTNx///3wer0AgM8//xxjxozB559/\njvnz52PSpEm48sorceDAASxfvhxnn302pk2bhiVLlqCtrU27bm1tLW6//XacfvrpmDZtGhYtWoS9\ne/dq+++77z58//vfj6jL888/j1mzZml/jxkzBm+//TYWLVqEKVOm4Nxzz8Xjjz8OQRC0/QDwyCOP\n4Ac/+EFM2xoaGjBu3DisW7cuYvuLL76I2bNnQxRF1NXVYfHixTjttNMwdepULFy4EF988YWh+58s\nf//733HppZdiypQpOPvss/HEE09oz+6aa67Btm3b8O6772L8+PEAgGAwiKeffhpz587FxIkTccop\np+CWW25BXV1dn+tit9vBMIz29zXXXIMf//jHfb5uf4AEtR/x4osvYuTIkXjnnXdwxx134IUXXsDv\nfve7uMcvWbIEjY2N+P3vf4/33nsP9957L1avXo3XX3894rhly5bh0UcfxV//+ld0dHTg2muvxZYt\nW/DSSy/h2Wefxeeff44//vGPAJS5wKuvvhqCIOCll17Cm2++CbPZjIULF+Lw4cNJteeJJ57AhRde\niNWrV+O6667Dn//8Z/zzn/8EAGzcuBEA8OMf/xjPP/98zLnV1dU488wzsXr16ojtq1evxmWXXQaT\nyYSlS5eCZVmsWLEC77zzDqqqqrBkyRL4fL6k6tkTL730Eh588EFcccUVWL16NR588EG8++67WLp0\nKQBlyD158mTMmzcPH3/8MQDgySefxD/+8Q88+uijeP/99/Hcc8/hwIEDeOyxx3pdD1mWsXXrVvz7\n3/+O+aARxqAhfz/ilFNOwT333AMAGDlyJL755hu8+uqr+OEPfwiWjfy2BgIBXHLJJTjvvPMwbNgw\nAMDQoUPx1ltvxRhSbrvtNkyfPh0AcP7552P58uX41a9+heLiYowePRozZ87UzlEF9Ne//jUcDgcA\n4Ne//jXmzp2LV155BQ888IDh9ixYsABXXnklAODmm2/GypUrsW3bNlx22WXaMNblcsUdsl555ZW4\n99570dHRgZKSEuzYsQMHDx7EFVdcAQA4ePAgRowYgSFDhsBms+Ghhx7CV199FXOv+oIkSfjjH/8Y\nYQg68cQTIUkS7rzzTuzbtw9jxowBx3GwWCwYMGAAAGDSpEmYO3cuTj/9dADAoEGDcOGFF2LNmjVJ\nlf/oo49qIhwMBiEIAk477TRcdNFFKWtjf4J6qP2IM844I+Lv6dOno7W1FcePH4851mq14rrrrsOu\nXbuwbNkyLFmyBOeddx527NgBSZIijh0xYoT2/w6HA2VlZSguLta22e12BINBAIpVe/z48ZqYAspc\n7+TJkw1bvFVGjhwZ8XdRURF4njd8/ty5c+F0OrF27VoAwDvvvIPp06dr1126dCnWrl2LGTNm4Kab\nbsLKlSsxevTolBr6mpqa0NbWhlNPPTVi+2mnnQYAEVMh4Vx66aUAgGeeeQZ33nknLrnkEixfvlwz\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a1db9b048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.lmplot(x='total_bill', y='tip', data=tips, fit_reg=False)\n",
    "plt.title('Tip amount vs. Total Bill')\n",
    "plt.xlabel('Total Bill')\n",
    "plt.ylabel('Tip Amount');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Although the average tip amount is $\\$3$, if a table orders $\\$40$ worth of food we would certainly expect that the waiter receives more than $\\$3$ of tip. Thus, we would like to alter our model so that it makes predictions based on the variables in our dataset instead of blindly predicting the mean tip amount. To do this, we use a linear model instead of constant one.\n",
    "\n",
    "Let's briefly review our current toolbox for modeling and estimation and define some new notation so that we can better represent the additional complexity that linear models have."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining a Simple Linear Model\n",
    "\n",
    "We are interested in predicting the tip amount based on the total bill of a table. Let $ y $ represent the tip amount, the variable we are trying to predict. Let $ x $ represent the total bill, the variable we are incorporating for prediction. \n",
    "\n",
    "We define a linear model $ f_\\boldsymbol\\theta^* $ that depends on $ x $:\n",
    "\n",
    "$$\n",
    "f_\\boldsymbol\\theta^* (x) = \\theta_1^* x + \\theta_0^*\n",
    "$$\n",
    "\n",
    "We treat $ f_\\boldsymbol\\theta^* (x) $ as the underlying function that generated the data.\n",
    "\n",
    "$ f_\\boldsymbol\\theta^* (x) $ assumes that in truth, $ y $ has a perfectly linear relationship with $ x $. However, our observed data do not follow a perfectly straight line because of some random noise $ \\epsilon $. Mathematically, we account for this by adding a noise term:\n",
    "\n",
    "$$\n",
    "y = f_\\boldsymbol\\theta^* (x) + \\epsilon\n",
    "$$\n",
    "\n",
    "If the assumption that $ y $ has a perfectly linear relationship with $ x $ holds, and we are able to somehow find the exact values of $ \\theta_1^* $ and $ \\theta_0^* $, and we magically have no random noise, we will be able to perfectly predict the amount of tip the waiter will get for all tables, forever. Of course, we cannot completely fulfill any of these criteria in practice. Instead, we will estimate $ \\theta_1^* $ and $ \\theta_0^* $ using our dataset to make our predictions as accurate as possible."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Estimating the Linear Model**\n",
    "\n",
    "Since we cannot find $ \\theta_1^* $ and $ \\theta_0^* $ exactly, we will assume that our dataset approximates our population and use our dataset to estimate these parameters. We denote our estimations with $\\theta_1$ and $\\theta_0$, our fitted estimations with $ \\hat{\\theta_1} $ and $ \\hat{\\theta_0} $, and our model as:\n",
    "\n",
    "$$\n",
    "f_\\boldsymbol\\theta (x) = \\theta_1 x + \\theta_0\n",
    "$$\n",
    "\n",
    "Sometimes you will see $ h(x) $ written instead of $ f_\\hat{\\boldsymbol\\theta} (x) $; the \"$ h $\" stands for hypothesis, as $ f_\\hat{\\boldsymbol\\theta} (x) $ is our hypothesis of $ f_{\\boldsymbol\\theta^*} (x) $.\n",
    "\n",
    "In order to determine $ \\hat{\\theta_1} $ and $ \\hat{\\theta_0} $, we choose a cost function and minimize it using gradient descent."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": false,
   "sideBar": false,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": true,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
